﻿using System;
using System.Runtime.Serialization;
using NCMIS.ObjectModel.MetaData;
namespace NCMIS.Produce
{
    /// <summary>
    /// Indicates the types of queries that the Repository has the ability to fulfill.
    /// </summary>
    [DataContract(Namespace = CmisNs.Cmis)]
    public enum CapabilityQuery
    {
        /// <summary>
        /// No queries of any kind can be fulfilled.
        /// </summary>
        [EnumMember(Value = "none")]
        None,

        /// <summary>
        /// Only queries that filter based on object properties can be fulfilled. Specifically, the CONTAINS() predicate function is not supported.
        /// </summary>
        [EnumMember(Value = "metadataonly")]
        MetadataOnly,

        /// <summary>
        /// Only queries that filter based on the full-text content of documents can be fulfilled. Specifically, only the CONTAINS() predicate
        /// function can be included in the WHERE clause.
        /// </summary>
        [EnumMember(Value = "fulltextonly")]
        FulltextOnly,

        /// <summary>
        /// The repository can fulfill queries that filter EITHER on the full-text content of documents OR on their properties, but NOT if both
        /// types of filters are included in the same query.
        /// </summary>
        [EnumMember(Value = "bothseparate")]
        BothSeparate,

        /// <summary>
        /// The repository can fulfill queries that filter on both the full-text content of documents and their properties in the same query.
        /// </summary>
        [EnumMember(Value = "bothcombined")]
        BothCombined,
    }
}
